package set

// Set 结构体，使用 map 实现
type Set struct {
	data map[string]bool
}

// NewSet 创建一个新的 Set
func NewSet() *Set {
	return &Set{data: make(map[string]bool)}
}

// Add 向 Set 中添加元素
func (s *Set) Add(item string) {
	s.data[item] = true
}

// Remove 从 Set 中移除元素
func (s *Set) Remove(item string) {
	delete(s.data, item)
}

// Contains 检查 Set 是否包含指定元素
func (s *Set) Contains(item string) bool {
	return s.data[item]
}

// Size 返回 Set 的大小
func (s *Set) Size() int {
	return len(s.data)
}

// Items 返回 Set 中的所有元素
func (s *Set) Items() []string {
	items := make([]string, 0, len(s.data))
	for item := range s.data {
		items = append(items, item)
	}
	return items
}
